package kioschool.util
{
	import flash.text.TextField;
	import flash.text.TextFormat;

	/**
	 * Набор утилит для работы со строками
	 * 
	 * @author Akimushkin Vasiliy
	 */ 
	public class StringUtils
	{
		/**
		 * Преобразует строку в массив символов
		 */ 
		public static function toArray(string:String):Array {
			var inArray:Array = new Array();
			for (var c:int=0;c<string.length;c++){
				inArray.push(string.substr( c, 1 ))
			}
			return inArray
		}
		
		/**
		 * Преобразует массив символов в строку
		 */ 
		public static function toString(array:Array):String{
			var str:String = "";
			for (var c:int=0;c<array.length;c++){
				str+=array[c];
			}
			return str;
		}
		
		/**
		 * Посимвольно разбивает строку на неколько таким образом,
		 * чтобы текст был виден в текстовом поле
		 */ 
		public static function toMultilineBySymbols(input:String, width:int, textFormat:TextFormat):String{
			var view:TextField = new TextField();
			view.width=width;
			var result:String = "";
			var source:Array = StringUtils.toArray(input);
			var line:String="";
			var symbol:String="";
			while(source.length>0){
				symbol=source[0];
				source.shift();
				view.text=line+symbol;
				view.setTextFormat(textFormat);
				if(view.getLineMetrics(0).width<view.width)
					line=line+symbol;
				else{
					result+=line+"\n";
					line=symbol;
				}
			}
			result+=line;
			return  result;
		}
		
		/**
		 * Разбивает строку по словам на неколько таким образом,
		 * чтобы текст был виден в текстовом поле
		 */ 
		public static function toMultiline(input:String, width:int, textFormat:TextFormat):String{
			var view:TextField = new TextField();
			view.width=width;
			var result:String = "";
			var source:Array = StringUtils.toArray(input);
			var line:String="";
			var word:String="";
			while(source.length>0){
				word="";
				do{
					word+=source[0];
					source.shift();	
				}while(word.charAt(word.length-1)!=" " && source.length!=0)
				view.text=line+word;
				view.setTextFormat(textFormat);
				if(view.getLineMetrics(0).width<view.width)
					line=line+word;
				else{
					result+=line+"\n";
					line=word;
				}
			}
			result+=line;
			return  result;
		}
	}
}